package com.example.flashsales.mappers;

import com.example.flashsales.entity.dto.GoodsDto;
import com.example.flashsales.entity.pojo.Goods;
import com.example.flashsales.entity.pojo.GoodsType;
import com.example.flashsales.entity.vo.GoodsVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface GoodsMapper {

    //添加商品
    int addGoods(GoodsDto goods);

    //添加描述
    long addDetails(GoodsDto goods);

    //删除商品
    int deleteGoods(long goodsId);

    //查看信息
    Goods viewGoodsMessage(long id);

    //查看所有商品
    List<GoodsVo> viewAllGoods(@Param("num") int num, @Param("page") int page);

    //根据细节id获取细节
    String getDetailsByDetailsId(long detailsId);

    //根据类型id获取类型
    String getTypeByTypeId(int typeId);

    //根据类型获取商品
    List<GoodsVo> viewGoodsByType(@Param("typeId") Integer typeId, @Param("num") int num, @Param("page") int page);

    //按名字查询商品
    List<GoodsVo> viewGoodsByName(@Param("name") String name, @Param("num") int num, @Param("page") int page);

    //修改商品描述
    int updateDetails(@Param("details") String details, @Param("detailsId") long detailsId);

    //修改名称
    int updateName(@Param("id") long id, @Param("name") String name);

    //修改商品类型
    int updateGoodsType(@Param("id") long id, @Param("typeId") Integer typeId);

    //修改数量
    int updateCount(@Param("id") long id, @Param("count") double count);

    //修改价格
    int updatePrice(@Param("id") long id, @Param("price") double price);

    //修改图片地址
    int updateUrl(@Param("id") long id, @Param("url") String url);

    //查看所有类型
    List<GoodsType> viewAllType();

    //删除类型
    int deleteType(@Param("typeId") int typeId);

    //增加类型
    int addType(@Param("type") String type);

    //修改类型
    int updateType(@Param("typeId") int typeId, @Param("type") String type);

    //查看所有数量
    long viewAllGoodsNum();

    //根据名称查看数量
    long viewNumByName(@Param("name") String name);

    //根据类型查看
    long viewNumByType(@Param("typeId") Integer typeId);

    //删除商品（隐藏）
    int upadteGoodsState(@Param("goodsId") long goodsId);

    //查看名称
    List<String> viewGoodsName();
}
